package br.com.toscano.gobra.business;

import javax.inject.Inject;

import br.gov.frameworkdemoiselle.stereotype.BusinessController;
import br.gov.frameworkdemoiselle.template.DelegateCrud;
import br.gov.frameworkdemoiselle.util.ResourceBundle;

import br.com.toscano.automacao.constant.ConstantesMensagem;
import br.com.toscano.automacao.exception.DescricaoException;
import br.com.toscano.gobra.domain.Despesa;
import br.com.toscano.gobra.domain.Despesa;
import br.com.toscano.gobra.domain.Despesa;
import br.com.toscano.gobra.persistence.DespesaDAO;

@BusinessController
public class DespesaBC extends AbstractBC<Despesa, Long, DespesaDAO> {
	
	private static final long serialVersionUID = 1L;

	
	@Inject
	private ResourceBundle bundle;

	@Override
	public Despesa insert(Despesa bean) {
		Despesa Despesa = this.getDelegate().consultarPorDescricao("codigo" , bean.getCodigo());
		if (Despesa != null) {
			throw new DescricaoException(bundle.getString(ConstantesMensagem.MSG_ERRO_DESCRICAO_JA_USADA, "Código"));
		} else {
			return super.insert(bean);
		}
	}
	
	@Override
	public Despesa update(Despesa bean) {
		Despesa Despesa = this.getDelegate().consultarPorDescricao("codigo" , bean.getCodigo());
		if (Despesa != null  && !Despesa.getKey().equals(bean.getKey())) {
			throw new DescricaoException(bundle.getString(ConstantesMensagem.MSG_ERRO_DESCRICAO_JA_USADA, "Código"));
		} else {
			return super.update(bean);
		}
	}
}
